public class code1 {
    //全排列：子集问题：决策树
    //1.全局变量
    int sum;//记录结果
    int path;//记录当前层的结果之和
    public int subsetXORSum(int[] nums) {
        dfs(nums,0);//从第一层空集开始递归
        return sum;
    }
    //2.dfs
    public void dfs(int[] nums,int pos) {
        sum += path;
        //5.递归出口：无(直接for循环到最大长度)
        for(int i=pos;i<nums.length;i++) {
            path ^= nums[i];
            dfs(nums,i+1);
            //3.回溯:消消乐
            path ^= nums[i];
        }
        //4.剪枝(无)
    }
}
